home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / IATHREAD.PAK / WINMAIN.C < prev   
C/C++ Source or Header  |  1997-05-06  |  4KB  |  113 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   winmain.c
  9. //
  10. //  PURPOSE:   Calls initialization functions and processes the message loop
  11. //
  12. //
  13. //  PLATFORMS: Windows 95, Windows NT
  14. //
  15. //  FUNCTIONS:
  16. //    WinMain() - calls initialization functions, processes message loop
  17. //
  18. //  COMMENTS:
  19. //
  20. //
  21.  
  22. #include <windows.h>            // required for all Windows applications
  23. #include "globals.h"            // prototypes specific to this application
  24. #include "resource.h"
  25.  
  26. //-------------------------------------------------------------------------
  27. // Global variables
  28.  
  29. HINSTANCE hInst          = NULL;    // Current instance's handle
  30. HWND      ghwndFrame     = NULL;    // Application's main frame window
  31. HWND      ghwndMDIClient = NULL;    // The MDI client window handle.
  32. HMENU     ghInitMenu     = NULL;    // Initial menu for frame window
  33. HMENU     ghDocMenu      = NULL;    // Document menu for frame window
  34.  
  35.  
  36. //
  37. //  FUNCTION: WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  38. //
  39. //  PURPOSE: calls initialization function, processes message loop
  40. //
  41. //  PARAMETERS:
  42. //
  43. //    hInstance     - The handle to the instance of this application that
  44. //                    is currently being executed.
  45. //    hPrevInstance - This parameter is always NULL.
  46. //    lpCmdLine     - A pointer to a null terminated string specifying the
  47. //                    command line of the application.
  48. //    nCmdShow      - Specifies how the main window is to be diplayed.
  49. //
  50. //  RETURN VALUE:
  51. //    If the function terminates before entering the message loop,
  52. //    return FALSE. Otherwise, return the WPARAM value sent by the WM_QUIT 
  53. //    message.
  54. //
  55. //
  56. //  COMMENTS:
  57. //
  58. //    Windows recognizes this function by name as the initial entry point
  59. //    for the program.  This function calls the application initialization
  60. //    routine, if no other instance of the program is running, and always
  61. //    calls the instance initialization routine.  It then executes a
  62. //    message retrieval and dispatch loop that is the top-level control
  63. //    structure for the remainder of execution.  The loop is terminated
  64. //    when a WM_QUIT  message is received, at which time this function
  65. //    exits the application instance by returning the value passed by
  66. //    PostQuitMessage().
  67. //
  68. //    If this function must abort before entering the message loop, it
  69. //    returns the conventional value FALSE.
  70. //
  71.  
  72. #pragma argsused
  73. int WINAPI WinMain(HINSTANCE hInstance,
  74.                    HINSTANCE hPrevInstance, 
  75.                    LPSTR     lpCmdLine, 
  76.                    int       nCmdShow)
  77. {
  78.     MSG    msg;
  79.  
  80.     // Save the instance handle in a global variable, which may be handy
  81.     // in the application later.
  82.     hInst = hInstance;
  83.  
  84.  
  85.     // Load resources that will be used later        
  86.     ghInitMenu  = LoadMenu (hInstance, MAKEINTRESOURCE(IDM_INITMENU));
  87.     ghDocMenu   = LoadMenu (hInstance, MAKEINTRESOURCE(IDM_DOCMENU));
  88.  
  89.  
  90.     // Initialize application by setting up the main window and 
  91.     // registering the MDI child window class.
  92.     ghwndFrame = InitFrameWindow(hInstance, nCmdShow, ghInitMenu);
  93.     if (ghwndFrame == NULL)
  94.         return FALSE;
  95.  
  96.     if (!RegisterMDIChildClass(hInstance))
  97.         return FALSE;
  98.  
  99.  
  100.     // Acquire and dispatch messages until a WM_QUIT message is received.
  101.     while (GetMessage(&msg, NULL, 0, 0))
  102.     {
  103.         if (!TranslateMDISysAccel(ghwndMDIClient, &msg))
  104.         {
  105.             TranslateMessage(&msg);
  106.             DispatchMessage(&msg); 
  107.         }
  108.     }
  109.  
  110.     // Returns the value from PostQuitMessage
  111.     return msg.wParam;
  112. }
  113.